草庐IT

c++ - gcc 和 libstdc++ 向前兼容

全部标签

c++ - GCC 和 clang 中奇怪的构造和析构函数语法(void * 返回类型)

在编写一些C++代码(使用clang、x86_64linux进行编译)时,我不小心编写了以下结构:classClass{*Class(){}};即在构造函数名称前加上星号(*)。再尝试一下,我注意到您可以在前面放置任意数量的*;它也适用于析构函数,即classClass{********Class(){}********~Class(){}};Clang编译它没有任何错误或警告。但是GCC给出了警告controlreachesendofnon-voidfunction这让我相信我实际上是在声明一个返回类型为void*(或void********)的构造函数/析构函数。写任何类型的带有值

c++ - GCC 的 <experimental/ranges> 过滤器 View 无法使用无限范围 iota() 进行编译

我正在探索gcc中的实验范围库实现。将无限iota范围与过滤器View组合时,我得到了一个令人惊讶的编译错误(liveexample与GCC9.0HEAD201812):#include#include#includeintmain(){usingnamespacestd::experimental::ranges;autoodds=view::filter([](intx){returnx%2!=0;});//autov=std::vector{0,1,2,3,4,5};//autox=v|odds;//(1)ok//autox=view::iota(0,6)|odds;//(2)o

PE文件结构 安全分析与恶意软件研究 逆向工程 优化与性能调整 兼容性与移植性分析

了解PE(PortableExecutable,可移植可执行文件)文件结构有多个用途对于软件开发、安全分析、逆向工程等领域的专业人士来说尤其重要。PE文件格式是Windows操作系统中用于可执行文件、动态链接库(DLLs)、以及其他文件类型(如FON字体文件等)的标准格式。掌握PE文件结构的知识可以帮助专业人士:软件开发与调试:开发者可以更好地理解自己的应用程序如何被操作系统加载和执行,以及如何与操作系统的其他部分交互。这对于性能优化、故障排查和高级功能实现(如动态加载模块)来说至关重要。安全分析与恶意软件研究:安全研究人员和恶意软件分析师需要了解PE文件结构,以便他们可以识别和分析潜在的恶意

uniapp开发的通用下拉框树形结构(兼容小程序、APP、H5)

uniapp开发的通用下拉框树形结构,同时兼容小程序、APP、H5简介获取方式依赖组件代码示例:组件属性说明:子组件change事件返回数据属性说明:简介cxk-dropdown-tree是通过uniapp开发的一款通用的下拉框树形结构的组件,同时兼容小程序、APP和H5,图片展示:获取方式直接在uniapp插件市场下载,将插件导入HBuilder使用即可,下载地址:https://ext.dcloud.net.cn/plugin?id=16598依赖组件本组件依赖uni-ui扩展组件,使用前请提前引入uni-forms、uni-icons等,详细依赖请下载插件市场中的示例项目代码示例:tem

c++ - gcc 相对于在新表达式中解析 type-id 发出错误

这个程序#includeintmain(){conststd::size_tN1=2;conststd::size_tN2=3;int(**p)[N1]=new(int(*[N2])[N1]);}doesnotcompile使用编译器C++gccHEAD10.0.020190。编译器报错prog.cc:Inlambdafunction:prog.cc:8:40:error:expected'{'before')'token8|int(**p)[N1]=new(int(*[N2])[N1]);|^prog.cc:Infunction'intmain()':prog.cc:8:34:err

c++ - 在 Mingw 上编译的 C/C++ 代码会保证与 GCC 完全兼容(在 linux 和 Mac 上)

我想生成交叉编译器兼容的C++代码。我编写了一些有点“异国情调”的代码,将C++语言推向灰色、怪异、神秘的领域。考虑到我的代码只依赖于boost和STL,问题是检查代码兼容性,而不是库兼容性:我的代码同时编译msvc和Mingw是否能确保我的代码100%与每个平台上的GCC兼容? 最佳答案 完全没有。使用MSVC和MinGW编译您的代码可确保您的代码与Microsoft的C/C++库兼容。我知道你只是在谈论代码兼容性,但这样的事情不存在。如果您将C++插入灰色区域,则很可能相同的代码会根据编译平台的不同而产生不同的结果。保证完全兼容

c++ - 是否可以将 gcc 编译库与 MSVC 一起使用?

我有一个项目依赖于libiconv进行多项操作。我在VisualStudio2008中使用iconv.lib的预编译二进制文件,但现在我不得不转向VisualStudio2010,并且没有更多的预编译二进制文件可用。我决定自己编译它,但正如libiconv文档所述,没有对MSVC编译器的官方支持。但是,我在某处读到gcc可以生成与MSVC编译器二进制兼容的静态库,只要二进制接口(interface)保留在C中即可。虽然这听起来很疯狂,但我试了一下,实际上几乎成功了。我编译了它,将libiconv.a重命名为iconv.lib并尝试与它链接。(如果这是个坏主意,请告诉我)。首先遇到链接错

C++11 初始化语法问题(使用 gcc 4.5/4.6)

以下C++11代码有什么问题:structS{inta;floatb;};structT{T(Ss){}};intmain(){Tt(S{1,0.1});//ERRORHERE}gcc在指定的行给出错误(我尝试了gcc4.5和gcc4.6的实验版本)这不是有效的C++11,还是gcc的实现不完整?编辑:这里是编译器错误:test.cpp:Infunctionintmain():test.cpp:14:10:error:expected)before{tokentest.cpp:14:10:error:afunction-definitionisnotallowedherebefore{

Linux系统没有管理员权限如何编译安装高版本gcc

有一台公共的服务器,每个人都有自己的账号,但是没有root权限,也不能使用sudo切换,此时需要使用gcc7.5.0(默认gcc版本是4.8.5),因此只能通过在家目录下编译安装高版本gcc来达到我们的目的,这样就不会改变系统的gcc版本,也不涉及管理权限问题。以下是编译安装gcc 7.5.0的完整步骤,可供参考。(1)下载gcc-7.5.0源码[zsa@localhost~]$wgethttp://mirror.linux-ia64.org/gnu/gcc/releases/gcc-7.5.0/gcc-7.5.0.tar.gz(2)解压文件[zsa@localhost~]$tarzxfgcc

c++ - 我如何使用 gcc 的内联报告 (-Winline)

在我的项目中启用-Winline会产生大量我不太理解的输出。有谁知道如何使用此输出找出我的特定函数未内联的原因? 最佳答案 好吧,根据我的gcc手册页...Thecompilerusesavarietyofheuristicstodeterminewhetherornottoinlineafunction.Forexample,thecompilertakesintoaccountthesizeofthefunctionbeinginlinedandtheamountofinliningthathasalreadybeendonei